package com.renjiyue.GUI;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class GUIDome12 {
    public static void main(String[] args) {
        new Calculator2().launchFrame();
    }
}
//这里设置是完成计算器元素的布局
class Calculator2 extends Frame {
    TextField num1,num2,num3;
    public void launchFrame(){
        num1 = new TextField(10);
        num2 = new TextField(10);
        num3 = new TextField(15);
        Label lbPlus = new Label("+");
        Button btnEqual = new Button("=");
        btnEqual.addActionListener(new MyMonitor5(this));
        setLayout(new FlowLayout());
        add(num1);
        add(lbPlus);
        add(num2);
        add(btnEqual);
        add(num3);
        pack();
        setVisible(true);
    }
}
/*
这里通过取得Calcuator2c类的引用，然后使用这个引用去访问Calculator2类里面的成员变量
这种做法比上一种直接去询问Calculator2类里面的成员变量要好得多
因为现在不需要知道Caltculator2类里面的有哪些成员变量
现在要访问Calculator2类里面的成员变量，直接使用Calculator2类对象的引用去访问即可
这个Calcuculator2类的对象好比是一个大管家，而我告诉大管家，我要访问Calculator2类里面的哪些撤哪些成员变量
大管家的引用就会去帮我找，不在需要我自己去找了
这种在一个类里面持有另一个类的引用的用法是一种非常典型的用法
使用获取到的引用就可以在一个类里面访问另一个类的所有成员
 */
class MyMonitor5 implements ActionListener {
    Calculator2 calculator2 = null;
    public MyMonitor5(Calculator2 calculator2){
        this.calculator2 =  calculator2;
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        int n1 = Integer.parseInt(calculator2.num1.getText());
        int n2 = Integer.parseInt(calculator2.num2.getText());
        calculator2.num3.setText(""+(n1+n2));
        calculator2.num1.setText("");
        calculator2.num2.setText("");
    }
}